<?php
declare (strict_types = 1);

namespace app\common\validate;

use think\Validate;
use app\common\model\user\Permission;
use app\common\model\system\Menu as MenuModel;

class Menu extends Validate
{

    /**
     * 定义验证规则
     * 格式：'字段名'	=>	['规则1','规则2'...]
     *
     * @var array
     */	
	protected $rule = [
        'name'      => 'require|max:15|unique:menu,name',
        'route'     => 'require',
        'icon'      => 'graph|max:12',
        'sort'      => 'integer',
        'parent_id' => 'require|integer|isPrentExist',
        'type'      => 'require|in:1,2',
    ];
    
    /**
     * 定义错误信息
     * 格式：'字段名.规则名'	=>	'错误信息'
     *
     * @var array
     */	
    protected $message = [
        'name.require'  => '菜单名称必须',
        'name.max'      => '菜单名长度不能超过15',
        'name.unique'   => '菜单名已存在',

        'route.require' => '路由地址不能为空',

        'icon.graph'      => '图标格式错误',
        'icon.max'      => '图标长度不能超过12',

        'sort.integer'  => '排序类型错误',

        'parent_id.require'  => '菜单级别错误',
        'parent_id.integer'  => '菜单类型错误',
        'parent_id.isPrentExist'  => '父级菜单错误',

        'type.require'  => '菜单类型不能为空',
        'type.in'       => '菜单类型错误',

    ];

    protected $scene = [
        'top'  =>  ['name','icon','sort','parent_id','type'],
        'sub'  =>  ['name','icon','sort','parent_id','route'],
    ];



    // 父菜单是否存在
    protected function isPrentExist($value, $rule, $data=[])
    {
        //如果选择了父菜单 检查是否存在
        if ($value > 0){
            return (bool) MenuModel::find($value);
        }
        return true;
    }




}
